package org.pps.gl.client.vue;

import java.util.ArrayList;

import org.pps.gl.client.GetInfoService;
import org.pps.gl.client.GetInfoServiceAsync;
import org.pps.gl.client.LoginInfo;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;

public class RSX_Relations extends Composite {
	VerticalPanel flux;

	public RSX_Relations() {
		flux = new VerticalPanel();
		flux.setStyleName("profilMarge");
		Label titre = new Label("Mes relations");
		titre.setStylePrimaryName("titre");
		flux.add(titre);

		// Pour chaque contact on affiche son mail et un lien HyperTexte vers sa
		// fiche
		for (String r : LoginInfo.getCurrentUser().getUserInfo().getContacts()) {
			HorizontalPanel line = new HorizontalPanel();
			line.setSpacing(5);
			
			// lien vers le profil
			Hyperlink hyperlink = new Hyperlink("", "user/" + r);
			hyperlink.setStyleName("ficheHyper");
			hyperlink.setStylePrimaryName("ficheHyper");
			line.add(hyperlink);
			hyperlink.setSize("33px", "30px");
			
			// nom de la personne
			final Label label = new Label(r);
			label.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
			line.add(label);
			line.setCellHeight(label, "10px");
			line.setCellVerticalAlignment(label,
					HasVerticalAlignment.ALIGN_MIDDLE);
			label.setSize("170px", "20px");
			
			GetInfoServiceAsync gis = GWT.create(GetInfoService.class);
			gis.getIdentite(r, new AsyncCallback<String>() {
				@Override
				public void onFailure(Throwable caught) {
					
				}

				@Override
				public void onSuccess(String result) {
					label.setText(result);
				}
			});
			
			flux.add(line);
			line.setSize("168px", "27px");
		}

		initWidget(flux);
	}
	
	public RSX_Relations(ArrayList<String> contacts) {
		flux = new VerticalPanel();
		flux.setStyleName("profilMarge");
		// Pour chaque contact on affiche son mail et un lien HyperTexte vers sa
		// fiche
		for (String r : contacts) {
			HorizontalPanel line = new HorizontalPanel();
			line.setSpacing(5);
			
			// lien vers le profil
			Hyperlink hyperlink = new Hyperlink("", "user/" + r);
			hyperlink.setStyleName("ficheHyper");
			hyperlink.setStylePrimaryName("ficheHyper");
			line.add(hyperlink);
			hyperlink.setSize("33px", "30px");
			
			
			
			// nom de la personne
			final Label label = new Label(r + " ");
			label.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
			line.add(label);
			line.setCellHeight(label, "10px");
			line.setCellVerticalAlignment(label,
					HasVerticalAlignment.ALIGN_MIDDLE);
			label.setSize("170px", "20px");
			
			
			GetInfoServiceAsync gis = GWT.create(GetInfoService.class);
			gis.getIdentite(r, new AsyncCallback<String>() {
				@Override
				public void onFailure(Throwable caught) {
					
				}

				@Override
				public void onSuccess(String result) {
					label.setText(result);
				}
			});
			
			flux.add(line);
			line.setSize("168px", "27px");
		}

		initWidget(flux);
	}
}
